前言
在开发 Android NDK 的时候,如果你是用 ndk-build 的方式,当在 Java 文件定义完 native 接口,按 ALT + ENTER 并不支持自动生成 cpp 文件,而手写 cpp 又非常容易写错,所以很有必要借助 javah 自动生成 .h 头文件。然而敲打 javah 命令也不是这么简单(设置 classpath,设置输出路径 等等。。。)
配置
在强大的 Android Studio 中 setting 中可以添加一些 extend tool 方便开发,今天就说下怎么配置 javah 和 ndk-build ,实现一键生成 .h 头文件,一键编译 so 库
setting 中选择 extend tool
javah 配置
- Program :
$JDKPath$\bin\javah.exe
这里配置的是 javah.exe 的路径(基本一致)$JDKPath$
可以从右侧按钮(insert macro)中选择 - Parametes :
$FileClass$
这里指的是要编译 .h 文件的 java 类 (注意这里只填写了 FileClass ,其他参数没有导入那么自定义的一些 model ,或者 Android.jar 中的类是不支持的,可以先生成 h 然后手动输入特殊的参数。 比如 Bitmap ,在 native 方法中先不传这个参数,当生成 h 文件后,手动添加一个 jobject 的参数) - Working :
$ModuleFileDir$\src\main\java
工作路径,也是 .h 生成的路径
ndk-build 配置
- Program :
C:\Users\xxx\AppData\Local\Android\Sdk\ndk-bundle\ndk-build.cmd
这里配置的是 ndk 下的 ndk-build.cmd 的路径,在你本地的 ndk-bundle 下 - Parametes : 这里不需要参数
- Working :
$ModuleFileDir$\src\main
工作路径
测试
Javah : 选中要生成 .h 的文件,右键 -> javah 就会看到有.h文件生成
ndk-build : 选中 jni 文件夹,然后点击 右键 -> ndk-build 会在 main 下生成一个 obj 目录,里面会生成 libxxx.so